<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>let</title>
	</head>
	<body>
		<script>
			// if (true) {
			// 	let a = 10;
			// 	console.log(a);
			// }
			// console.log(a);   // a is not defined

			// if (true) {
			// 	let b = 20;
			// 	if (true) {
			// 		let c = 30;
			// 	}
			// 	console.log(b); // 20
			// 	console.log(c); // c is not defined
			// }

			// if (true) {
			// 	var b = 20;
			// 	if (true) {
			// 		var c = 30;
			// 	}
			// 	console.log(c); // 30
			// }
			// console.log(b); // 20

			// for (var i = 0; i < 10; i++) {}
			// console.log(i);

			// for (let j = 0; j < 10; j++) {}
			// console.log(j);

			// console.log(a); // undefined
			// var a = 10;

			// console.log(b);
			// let b = 20; // Uncaught ReferenceError: Cannot access 'b' before initialization

			var num = 10;
			if (true) {
				console.log(num); // 10
			}

			var num = 10;
			if (true) {
				console.log(num);
				let num = 20; // Uncaught ReferenceError: Cannot access 'num' before initialization
			}
			// 此处报错的原因是：在块级作用域内使用 let 声明了变量 num, num 和这个块级作用域绑定,和外面的哪个 num 没有关系, 形成暂时性死区, 不允许变量在定义前使用
		</script>
	</body>
</html>
